Sagemaker Ground TruthのPrivate WorkforceをCognitoで作成してみた
NTT東日本の中村です。
Sagemaker Ground Truthのlabeling Workforceを、Cognitoと連携し作成してみました。
Ground TruthのWorkforceの概要
SagemakerはAI・機械学習モデルの構築・トレーニング・サービスのデプロイを行うサービスです。 構築・トレーニングを行う時は、教師データが必要になることがあります。
Sagemaker Ground Truthは、教師データを効率良く作成するサービスです。数百、数千に及ぶ教師データを作成する際、複数のWorker(作業者)を割り当てると、ブラウザを経由して、Annotation(教師データ)の作成・レビュー・評価を行うことができます。
Workforceは、そのWorkerのグループを定義するものです。 実際にラベリングの作業を割り当てる時は、WorkforceのメンバーからからWorkerを選定し(WorkTeam)、ラベリングのジョブを割り当てます。
Workforceの種類
- Amazon Mechanical Turk(クラウドソーシング)
- vendor(AWS Marketplaceから、作業者を選定)
- private(Amazon Cognito及びOIDCプロバイダの登録者から選定)
また、より包括的なAmazon SageMaker Ground Truth Plus というサービスでは、Amazonが提携しているエキスパートワークフォースでアノテーションを行うことができます。
今回はCognitoと連携する仕組みなので、privateを利用します。
構築イメージ
手元には、既にS3HostingのReact(SPA)のWebアプリケーションがあり、Cognitoでの認証と、S3へ動画のアップロードの機能が備わっています。
ここにGround Truthの機能を追加します。プライベートワークフォースの認証に、Webアプリケーションで使われているCognitoを使うことで、2つの機能の認証を一元化します。
なお、Cognitoではユーザグループの管理を行っており、「Admin」ユーザグループに所属しているメンバーのみ、ラベリングに参加できる仕組みとします。
Workforceの作成
Groud Truthにアクセスする前に、Cogntoのドメインを作成します。
次に、Cognitoが存在するリージョンで、Ground Truth → ラベリングワークフォースを選択しました。 3種類のワークフォースのうち、プライベートを選択します。
ちなみに、そのリージョンで存在できるプライベートワークフォースは1つだけのようです。
プライベートなワークフォースの定義と、チームの作成を同時に行います。 なお、ワークフォースに対し、複数のチームを作成できます。
既存のCognitoユーザープールを選択します。 アプリクライアントは、Client Secretが存在するものを指定するか、この場で新規作成を行います。
Cognitoユーザーグループを指定できます。 予めCognitoではラベリング対象者をAdminグループに登録しているので、ここでAdminを設定しておきます。
完了しました。 「ラベリングポータルのサインインURL」が、ラベリングを行うためのログイン画面です。
CognitoのApplicationクライアントを確認すると、Sagemaker用のクライアントが作成されていました。
Ground Truthに戻ります。
ワークチームには、Adminグループに登録されているユーザ全てが登録されています。 もしチームメンバーを変更したい場合、一覧からチームメンバーを追加・削除が可能です。
Groudn Truthのジョブを作成し、ワークスチームに割り当てを行うと
チーム概要で、適用されているジョブを確認できます。
サインインURLで、Webアプリケーションと同じ認証でアクセスを行います。
ログインに成功すると、割り当てられているジョブが確認できました。 ここから、ラベリングを開始できます。
今回は動画のラベリング(オブジェクトの検出・バウンディングボックス)です。ジョブの作成方法や、ラベリングツールのイメージは下記の記事がそのまま参考になります。
最後に
既存のCognitoを再利用することで、認証を一元化し、Webアプリケーションの利用ユーザをスムーズにラベリングに誘導することができました。